home *** CD-ROM | disk | FTP | other *** search
- ===========================================================================
- BBS: The Abacus * HST/DS * Potterville MI
- Date: 04-28-93 (18:45) Number: 166
- From: WAYNE MATSON Refer#: NONE
- To: CHRIS DOWNS Recvd: NO
- Subj: get disk free space 2/2 Conf: (36) C Language
- ---------------------------------------------------------------------------
- >>> Continued from previous message
- strCommas = strLen / 3;
- if (!(strLen % 3))
- --strCommas;
-
- if (strCommas) {
- dynStr = (char *)malloc(strLen + strCommas + 1);
- dynPtr = dynStr + strLen + strCommas + 1;
- strPtr = str + strLen;
- *dynPtr = 0;
-
- for (i = 0, --dynPtr,--strPtr; i < strCommas; i++) {
- for (x = 3; x > 0; x--)
- *dynPtr-- = *strPtr--;
- *dynPtr-- = ',';
- }
- for (; str != strPtr; *dynPtr-- = *strPtr--);
- *dynPtr = *strPtr;
- }
-
- strcpy(str, dynPtr);
- if (NULL != dynStr)
- free(dynStr);
- return str;
- }
-
- static int GetDiskSpace(int drv, Ulong *ttlDrv, Ulong *ttlFree) {
- /******************************************************************************
- ** Get disk drive total and free space. **
- ** **
- ** Syntax: **
- ** int GetDiskSpace(int drv, unsigned long ttlDrv, unsigned log ttlFree) **
- ** drv = integer value of drive to check, drives are number from **
- ** 0 - maxDrive number. with 0 being default drive and 1 = A: **
- ** 2 - B: and so on. **
- ** ttlDrv = address of unsigned long where total size of drive will **
- ** be returned. **
- ** ttlFree = address of unsigned long where total size of free space **
- ** will be returned **
- ** **
- ** returns 0 upon success and non-zero if invalid drive specified **
- ******************************************************************************/
- Ulong secPerCluster;
- Ulong noAvailCluster;
- Ulong bytesPerSector;
- Ulong clusterPerDrv;
- union REGS userRegs;
-
- userRegs.h.ah = GetFreeSpace;
- userRegs.h.dl = drv;
-
- int86(DosInt21, &userRegs, &userRegs);
-
- secPerCluster = userRegs.x.ax;
- if (0x0000ffff == secPerCluster)
- return 1;
-
- noAvailCluster = userRegs.x.bx;
- bytesPerSector = userRegs.x.cx;
- clusterPerDrv = userRegs.x.dx;
-
- *ttlDrv = secPerCluster * bytesPerSector * clusterPerDrv;
- *ttlFree = secPerCluster * bytesPerSector * noAvailCluster;
- return 0;
- }
- snip-------------------------->------------------------------------------------
- --- RAMail 3.3
- * Origin: ABACUS BBS - Chaparral,NM. (505) 824-0049 HST DS (1:381/85)
- SEEN-BY: 1/211 11/2 4 13/13 101/1 108/89 109/25 110/69 114/5 123/19 124/1
- SEEN-BY: 153/752 154/40 77 157/2 159/100 125 575 950 203/23 209/209 280/1
- SEEN-BY: 390/1 396/1 5 15 2270/1 2440/5 3603/20
-